#include <iostream>
#include <random>
#include <string>
#include <atomic>

std::string uuid()
{
    // 随机生成uuid
    // 生成 8 个 0-255 的随机数
    // 关于一个 8 字节的序号

    std::random_device rd;
    // for(int i = 0; i < 10; i++)
    // std::cout << rd() << std::endl;
    std::mt19937_64 generator(rd());
    // for(int i = 0; i < 10; i++)
    // std::cout << generator() << std::endl;
    std::uniform_int_distribution<int> distribution(0, 255);
    // for(int i = 0; i < 10; i++)
    // std::cout << distribution(generator) << std::endl;
    std::string s;
    char buf[128];
    for (int i = 0; i < 8; i++)
    {
        sprintf(buf, "%02x", distribution(generator));
        s += buf;
        if (i % 2 && i > 1)
            s += '-';
    }
    static std::atomic<size_t> seq(1);
    for (int i = 7; i >= 0; i--)
    {
        sprintf(buf, "%02lx", (seq>>i*8)&0xff);
        s += buf;
        if(i == 6) s += '-';
    }
    seq++;
    return s;
}

int main()
{
    for(int i = 0; i < 10; i++)
        std::cout << uuid() << std::endl;
    return 0;
}